Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

196
Vistas
Javascript / Node.js] Manejar error para promesa con espera

Escrito a continuación hay un ejemplo de mi código que suelo hacer. lo que hice es..

  1. Agregue try-catch para una función de promesa con async-await.
  2. No agregue try-catch para una función de promesa sin async-await.

Lo que quiero saber es que mi código está bien y es antipatrón o no.

Gracias de antemano.

 const readStatusAll = data => { return new Promise( async (resolve, reject) => { try { const category = await CoreStatus.findAll() resolve(category) } catch(err) { reject(err) } }) } // Promise without Await const readStatusAll = data => { return new Promise( async (resolve, reject) => { CoreStatus.findAll() resolve(category) } }) }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Lo que quiero saber es que mi código está bien y es antipatrón o no.

El primero funcionará correctamente, pero es un antipatrón.

El segundo no funcionará correctamente.

Ninguno de los bloques de código que muestra es la forma recomendada de hacer las cosas porque ambos envuelven innecesariamente una promesa existente en otra promesa creada manualmente. Esto se conoce como antipatrón. Esta primera versión funcionará correctamente, pero contiene un montón de código inútil (lo que lo convierte en un antipatrón) y con un poco más de complejidad en la función, es muy fácil cometer errores de codificación (por lo que, además de el código inútil que contiene, es un anti-patrón).

 const readStatusAll = data => { return new Promise( async (resolve, reject) => { try { const category = await CoreStatus.findAll() resolve(category) } catch(err) { reject(err) } }) }

En cambio, puede ser esto:

 const readStatusAll = data => { return CoreStatus.findAll(); }

La persona que llama recibirá la promesa como valor de retorno y luego puede usar .then() y .catch() o await y try/catch . Dado que no está haciendo nada con el error, aparte de propagarlo, no necesita detectar el error localmente; simplemente puede dejar que se propague de nuevo a la persona que llama.


Su segunda versión simplemente no es correcta en absoluto:

 // Promise without Await const readStatusAll = data => { return new Promise( async (resolve, reject) => { CoreStatus.findAll() resolve(category) } }) }

Debido a que no está prestando atención a ningún retorno asincrónico de CoreStatus.findAll() , resolverá esta promesa de envoltorio manual mucho antes de que se realice la llamada a la base de datos. De hecho, esto ni siquiera es un código legal ya que tiene un refuerzo inadecuado.

Tal vez quiso llamar a resolve(category) en alguna devolución de llamada o controlador .then() asociado con CoreStatus.findAll() . Pero, incluso si hiciera eso, aún no estaría propagando errores a la persona que llama. Esta no es la manera de hacer las cosas.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda